导航菜单
首页 >  SpringBoot2x 整合 thumbnailator 图片处理  > springboot 整合thumbnailator

springboot 整合thumbnailator

引入依赖,maven下载:

net.coobirdthumbnailator0.4.14

支持:

图片缩放、图片压缩、区域裁剪、添加水印、图片旋转。

API

1、Thumbnails.of(resource)  是一个重载方法,用String类型,表示图片原始路径,参数如下:

springboot 整合thumbnailator- 图片压缩_java

 2、Thumbnails.of(resource).size(int width, int height) 缩放大小

springboot 整合thumbnailator- 图片压缩_desktop_02

        规则一:当设定缩放的图片宽和高(102*150)都小于原来图片的宽和高(600*879),图片按比例缩小,最后缩完宽为102或高为150。

@Testvoid contextLoads() {try {Thumbnails.of("C:\\Users\\Administrator\\Desktop\\指定大小\\6.jpg").size(160, 150).toFile("C:\\Users\\Administrator\\Desktop\\指定大小\\6-6.jpg");} catch (IOException e) {System.out.println("e"+e);e.printStackTrace();}}

原始图片:springboot 整合thumbnailator- 图片压缩_缩放_03缩小完的图片:springboot 整合thumbnailator- 图片压缩_spring boot_04

 

        规则二:当设定缩放的图片宽和高(1600*1500)都大于原来图片的宽和高(600*879),图片按比例放大,最后缩完宽为1600或高为1500

@Testvoid contextLoads() {try {Thumbnails.of("C:\\Users\\Administrator\\Desktop\\指定大小\\6.jpg").size(1600, 1500).toFile("C:\\Users\\Administrator\\Desktop\\指定大小\\6-6.jpg");} catch (IOException e) {System.out.println("e"+e);e.printStackTrace();}}

原始图片:  springboot 整合thumbnailator- 图片压缩_desktop_05缩放完的图片大小:springboot 整合thumbnailator- 图片压缩_maven_06

 

         规则三:当设定缩放的图片宽和高(400*1500),原来图片的宽和高(600*879),宽比原来的小,高比原来的大,最后缩完 宽会缩小到400,图片比例保持不变。

@Testvoid contextLoads() {try {Thumbnails.of("C:\\Users\\Administrator\\Desktop\\指定大小\\6.jpg").size(400, 1500).toFile("C:\\Users\\Administrator\\Desktop\\指定大小\\6-6.jpg");} catch (IOException e) {System.out.println("e"+e);e.printStackTrace();}}

原始图片:  springboot 整合thumbnailator- 图片压缩_desktop_05缩放完的图片大小:springboot 整合thumbnailator- 图片压缩_desktop_08

 

          规则四:当设定缩放的图片宽和高(1500*400),原来图片的宽和高(600*879),宽比原来的大,高比原来的小,最后缩完 高会缩小到400,图片比例保持不变。

@Testvoid contextLoads() {try {Thumbnails.of("C:\\Users\\Administrator\\Desktop\\指定大小\\6.jpg").size(1500, 400).toFile("C:\\Users\\Administrator\\Desktop\\指定大小\\6-6.jpg");} catch (IOException e) {System.out.println("e"+e);e.printStackTrace();}}

原始图片:  springboot 整合thumbnailator- 图片压缩_desktop_05缩放完的图片大小:​​​​​​​springboot 整合thumbnailator- 图片压缩_maven_10

 

 3、 Thumbnails.of().size().toFile() 生成图片的路径,图片生成到哪里

重载的参数:

springboot 整合thumbnailator- 图片压缩_java_11 

如果与原图图片路径及图片名一样,会覆盖原始图片! 

 4、Thumbnails.of().scale( double count ).toFile() 指定比例放大或缩小,参数小于1缩小;参数大于1放大。

@Testvoid contextLoads() {try {Thumbnails.of("C:\\Users\\Administrator\\Desktop\\指定大小\\6.jpg").scale(2).toFile("C:\\Users\\Administrator\\Desktop\\指定大小\\6-6.jpg");} catch (IOException e) {System.out.println("e"+e);e.printStackTrace();}}

原始图片:springboot 整合thumbnailator- 图片压缩_desktop_05缩完、放大后的图片springboot 整合thumbnailator- 图片压缩_desktop_13

 5、添加水印 watermark() 

 Thumbnails.of() .scale() .watermark(Position position, ImageIO.read(new File(String "图片水印的路径")), float opcity) .toFile()

该方法是一个重载方法:

参数一:Position 生成水印的位置,Position这个接口有对应的实现类,下边我使用的是Positions这个实现类;

参数二:水印的路径,需要返回一个 BufferedImage,使用 ImageIO.read(new File(String "图片水印的路径")) 会返回此类型;

参数三:透明度,float类型的,0 ~ 1。

@Testvoid contextLoads() {try {Thumbnails.of("C:\\Users\\Administrator\\Desktop\\指定大小\\6.jpg").scale(1).watermark(Positions.TOP_CENTER, ImageIO.read(new File("C:\\Users\\Administrator\\Desktop\\6.jpg")), 0.7f).toFile("C:\\Users\\Administrator\\Desktop\\指定大小\\6-6.jpg");} catch (IOException e) {System.out.println("e"+e);e.printStackTrace();}}

springboot 整合thumbnailator- 图片压缩_maven_14

 6、rotate(double angle) 图片旋转,参数是旋转的角度。

@Testvoid contextLoads() {try {Thumbnails.of("C:\\Users\\Administrator\\Desktop\\指定大小\\6.jpg").scale(1).rotate(90d).toFile("C:\\Users\\Administrator\\Desktop\\指定大小\\6-6.jpg");} catch (IOException e) {System.out.println("e"+e);e.printStackTrace();}}

旋转之后效果图:

 springboot 整合thumbnailator- 图片压缩_maven_15

 7、sourceRegion(Position postion, int width, int height) 图片裁剪。

参数一:裁剪的位置;

参数二和参数三:图片的宽和高。

@Testvoid contextLoads() {try {Thumbnails.of("C:\\Users\\Administrator\\Desktop\\指定大小\\6.jpg").scale(1).sourceRegion(Positions.CENTER, 400, 500).toFile("C:\\Users\\Administrator\\Desktop\\指定大小\\6-6.jpg");} catch (IOException e) {System.out.println("e"+e);e.printStackTrace();}}

裁剪完是红框的部分:

 springboot 整合thumbnailator- 图片压缩_spring boot_16

 8、还有几个API 如下:

(1)keepAspectRatio(boolean arg) 图片是否按比例缩放,默认为true;

(2)outputQuality(float arg) / outputQuality(double arg) 图片质量;

区间从0.0 ~ 1.0 

springboot 整合thumbnailator- 图片压缩_java_17

springboot 整合thumbnailator- 图片压缩_java_18

 (3)outputFormat(String arg) 图片格式转换。

下边是源码中官方给出的案例:

 springboot 整合thumbnailator- 图片压缩_java_19

相关推荐: